Một ngày chủ nhật đi coffee cùng vài người bạn, nghe họ chia sẻ về chuyện nghề, những khó khăn khi đi sale: phải yêu, chiều khách, không được đánh khách trong mọi trường hợp, mọi tình huống…tôi cũng chỉ hiểu được 1 phần những nỗi niềm đó, bởi tôi tuy là 1 lập trình viên nhưng vẫn phải làm việc trực tiếp với khách hàng trong các dự án về Erp, hay khi nhận outsource ngoài.
Nhưng câu chuyện kéo dài nhất của chúng tôi là về chuyển ngành nghề từ sale bất động sản qua làm lập trình, cụ thể là lập trình Flutter, như tôi đang làm.
Vì sao tôi theo ngành lập trình, và hiện tại là lập trình Flutter?
Tôi nhớ vào năm 2008, Google bắt đầu đưa ra các Framework liên quan tới lập trình Android, từ đó tạo nên 1 làn sóng về Mobile khi đó. Hồi đó, ước muốn của tôi đơn giản chỉ là sở hữu 1 con điện thoại chạy hệ điều hành android. Đó cũng là lý do tôi chọn lập trình android từ những ngày đầu tiên, sau đó là những ngày tháng bắt đầu tìm kiếm outsource android như bao anh em khác.
Và điều gì đến cũng đến, lập trình android bắt đầu bão hoà dần, tình hình app android bị clone ngày 1 tăng, kèm theo đó là anh em Freelancer bắt đầu phá giá outsource android, như đã từng làm với web trước đó…
Lúc đó tôi đã nghĩ đây chắc chắn là cơ hội cho webapp, hybrid app và cross platform. Nhưng sau khi mày mò ngâm cứu về webapp, hybrid app, tôi thấy webapp, hybrid app chưa mang lại được nhiều giá trị: yêu cầu kết nối mạng và hiệu năng, giao diện chưa thực sự tối ưu.
Và điều gì cần tới cũng tới, vào 2019, tôi cùng các anh em trong team đã chuyển qua Flutter thay vì React Native, hay học thêm về ios. 1 vài điều còn đọng lại, và đã được tôi ghi lại khi đó
Tôi có hối hận khi chọn Flutter
1 người chuyển ngành, bắt đầu là 1 trang giấy trắng, nên tiếp cận Flutter như thế nào?
Đây là câu hỏi tôi nhận được khá nhiều khi bắt đầu công việc giảng viên tại TechMaster. Trước tôi hỗ trợ khá nhiều bạn sinh viên học về công nghệ, đã có nền tảng lập trình căn bản, tôi thấy để bắt đầu học Flutter khá đơn giản. Nhưng với 1 người chưa biết gì về lập trình, chưa biết lập trình hướng đối tượng thì sẽ phải tiếp cận Flutter như thế nào?
Từ khi bắt đầu lập trình năm 2013, tôi luôn nghĩ lập trình hướng đối tượng là điều bắt buộc cần có của mọi lập trình viên, mọi ngôn ngữ lập trình. Chỉ có vẻn vẹn 4 tính chất nhưng lại là nền tảng cho các structure sau này. 1 vài case study cụ thể có thể kể tới như level senior 2 ở các công ty tôi đã từng phỏng vấn như MonstarLab, Luci, Citigo, Novaon… đa phần đều yêu cầu ứng viên có khả năng đưa ra structure của dự án.
Khi đã có kiến thức về lập trình hướng đối tượng, tôi tin những kiến thức nâng cao hơn như: widget, stream, rxdart, isolate… sẽ không thể làm khó được khi bạn có niềm tin
.
Niềm tin
Tôi luôn nghĩ niềm tin là 1 thứ sức mạnh vô cùng to lớn, là nguồn gốc của mọi vấn đề.
Con người sẽ thiếu đi động lực, không muốn cố gắng, nỗ lực nếu họ không có niềm tin với công việc, vào dự án, vào tầm nhìn cũng như tương lai của công ty họ đang làm việc.
Startup thành hay bại mấu chốt nằm ở niềm tin của đội nhóm, niềm tin vào những ý tưởng sẽ mang lại những ý nghĩa cho xã hội, cho cộng đồng…
2 người nguyện nắm tay nhau đi hết con đường cũng nhờ niềm tin vào nửa còn lại
Hay con người ta nghĩ rằng mình mua đáy, bán đỉnh ở 1 thị trường nào đó, họ đưa ra quyết định bằng việc đặt hết niềm tin vào việc cổ phiếu hay 1 đồng tiền điện tử sẽ tăng giá trong thời gian tới…
Hay có những người khỏi bệnh nhờ niềm tin vào cuộc sống…
“Hãy cho tôi 1 điểm tựa, tôi có thể nâng cả quả đất”
Vậy niềm tin từ đâu mà có? Khơi gợi niềm tin như thế nào? Tôi mới ngẫm ra được sau khi nghe nhạc chill ở 1 thành phố xa lạ, đại ý là “Hãy thử nếu nó không gây nghiện”.
Điều tôi thực sự đã được thấy là hầu hết những người đã đặt mục tiêu chuyển ngành, chuyển nghề đều có 1 niềm tin mãnh liệt vào bản thân họ, họ đặt toàn bộ niềm tin vào ngành nghề mà họ sẽ theo đuổi, và hầu hết họ đều thành công.
Phương pháp học lập trình nhanh nhất?
Tôi cũng từng trải qua vài ngôn ngữ lập trình, tôi nghĩ con đường ngắn nhất để học lập trình là suy nghĩ về roadmap, có mục tiêu rõ rằng rằng mình mong muốn học những gì, mong muốn 1 mức lương, 1 công việc như thế nào. Bức tranh càng rõ ràng thì niềm tin của mình sẽ càng lớn. Và cuối cùng mới là bắt đầu những dòng lệnh đầu tiên.
Cũng như trong công việc, chúng tôi thường dùng OKRS để đưa ra các mục tiêu cho bản thân cũng như đội nhóm, công ty…rằng trong 1 tháng tới chúng tôi mong muốn đạt được điều gì…và từ đó đưa ra những việc cần phải làm để đạt được những mục tiêu đó.
Hay trước khi code, chúng tôi luôn dành 1 chút thời gian suy nghĩ, thảo luận về các vấn đề có thể gặp phải, trao đổi, đưa ra ý kiến về cách mình hiểu bài toán, cách mình sẽ giải bài toán…Bắt tay vào code luôn luôn là bước cuối cùng.
Nếu thấy khó khi thực hiện những điều trên, tôi nghĩ bạn nên tìm cho mình 1 người bạn đồng hành.
Tự đặt câu hỏi
Học cách đặt câu hỏi cũng là 1 cách giúp bạn học lập trình nhanh nhất. Thành quả sẽ tới khi bạn biết cách đặt câu hỏi 1 cách chính xác.
Ví dụ bạn muốn giảm cân. Nếu đưa ra những câu hỏi như: “Tại sao tôi không thể giảm cân?”, câu trả lời thường sẽ là do gen di truyền, do xương tôi to…Nhưng nếu câu hỏi bạn tự đặt ra cho mình là: “Làm thế nào để tôi có thể giảm cân?” thì câu trả lời sẽ mang tính hành động nhiều hơn: chơi môn thể thao yêu thích, bắt đầu thói quen chạy bộ…
1 vài câu hỏi mình hay áp dụng:
What do you really want? Bạn muốn điều gì?
Bạn có thực sự biết điều mình mong muốn? Bạn có mục tiêu rõ ràng?Bạn muốn có tiền? Tôi đưa bạn $1, liệu bạn có hài lòng?
Why do you want What you want? Tại sao bạn lại muốn thứ bạn muốn?
Nhiều người chọn 1 ngành nghề vì theo số đông, vì cha mẹ nói như vậy, kết quả thường sẽ là họ không thấy được ý nghĩa công việc của họ. Hơn 75% con người thấy không hài lòng với công việc hiện tại của họ.Why do not you already have What you want? Tại sao bạn lại chưa có được thứ bạn mong muốn?
Khi con người ta không có thứ mình muốn, họ thường đổ lỗi do hoàn cảnh. Dù bất cứ hoàn cảnh nào thì bạn vẫn luôn là người chịu trách nhiệm cho những việc làm của bạn, và chỉ có bạn mới có thể thay đổi được những điều đó. Bạn không thể thuê ai vẽ ước mơ của chính mình.What are you willing to do to get What you want? Bạn chấp nhận làm những điều gì để đạt được điều bạn muốn?
Cuộc sống là đánh đổi, ai cũng chỉ có 24h/ngày, liệu bạn có dám đánh đổi thời gian rảnh ở hiện tại để đổi xây dựng tương lai sau này?Nếu bạn tiếp tục làm những thứ bạn đang làm, bạn sẽ chỉ nhận được những thứ bạn đang có
What are you willing to do give up to get What you want? Bạn dám từ bỏ điều gì để đạt được điều bạn mong muốn?
Nếu bạn muốn cuộc sống trở nên dễ dàng hơn, hãy chấp nhận thử thách, chọn những điều khó khăn.
Nếu bạn muốn cuộc sống trở nên khó khăn hơn, hãy đừng mạo hiểm, chọn những điều dễ dàngBạn chỉ có thể nâng tạ nặng 5kg, nhưng bạn có dám thử thách bản thân ở mức tạ 10kg, 15kg?
Bạn muốn có 1 sức khỏe tốt, bạn có dám bỏ thuốc lá?Who has already achieved What I want to achieve? Ai đã làm được điều bạn muốn?
Hãy học hỏi từ những người đã làm được điều bạn mong muốn.What are you commited to doing every day to move you closer to your goals? Bạn cam kết gì mỗi ngày để đưa bạn tới gần hơn mục tiêu của bạn?
Khi mệt mỏi hãy tự hỏi bản thân mình lý do tại sao mình lại bắt đầu bạn nhé.
Suy nghĩ tạo nên hành động,
Hành động tạo nên thói quen,
Thói quen tạo nên tính cách,
Tính cách tạo nên số phận.
Tất cả các câu hỏi trên sẽ trở nên vô nghĩa nếu bạn không bắt đầu.
Sinh viên học lập trình khi ra trường, làm thế nào để có được mức lương $2k?
Hồi 2018, khi tham dự lễ khai giảng tại ITPlus, tôi từng nhận được 1 câu hỏi khó như thế này: “Sinh viên học lập trình khi ra trường, làm thế nào để có được mức lương $2k”. Khó vì sao, vì đợt đó lương tôi cũng chưa nổi $2k, đó cũng là 1 ước mơ của tôi khi đó. Nhưng đây thực sự là 1 câu hỏi rất hay, liệu nó có khả thi với 1 sinh viên mới ra trường?
Trong tất cả những người bạn mà tôi biết, đúng là chưa có trường hợp nào vừa ra trường mà đã đạt được mức lương $2k, nhưng có nhiều người bạn của tôi với hơn 1 năm kinh nghiệm đã làm được điều đó. 1 phần vì lĩnh vực đó đang rất khát nhân sự, 1 phần là những người bạn đó của tôi thuộc dạng đỉnh của đỉnh.
Tôi thường hay nói đùa với anh em là “Tăng lương bằng cách giảm giờ làm”. Đi làm bất kể ngành nghề, lĩnh vực gì đi chăng nữa, không phải cứ có chuyên môn giỏi, chăm chỉ là sẽ đạt được 1 mức lương hơn người. Có thể bạn làm ít hơn người ta, chuyên môn bạn kém người ta, nhưng giá trị bạn mang lại cho công ty lại nhiều hơn người ta. Vì sao?
Có 1 câu mà tôi được nghe khá nhiều khi còn ngồi trên ghế nhà trường:
Có tài mà không có đức là người vô dụng
Có đức mà không có tài làm việc gì cũng khó
Tất cả những người mức lương trên $2k tôi biết đều là những người vừa có tài, vừa có đức.
Ở môi trường doanh nghiệp, công sở cũng như vậy, có những người có chuyên môn giỏi, nhưng kỹ năng giao tiếp, kỹ năng mềm, khả năng chia sẻ không thực sự cao, hay có khả năng nhưng không dám nhận trách nhiệm, thấy việc lớn là tránh né…thì liệu 1 mức lương cao có xứng đáng?
Khi so sánh 2 lập trình viên
Tôi hay nói đùa với mấy bạn sinh viên là: 2 sinh viên đều giỏi, nhân phẩm tốt, đều có ý chí nhưng một người con nhà giàu, một người con nhà nghèo thì con gái sẽ chọn ai. Tất nhiên là con nhà giàu rồi. Vậy nếu em con nhà nghèo không có điều kiện thì thay vì mình có 4 tiếng học hãy học 8 tiếng, người ta ngủ 10 tiếng thì em ngủ 6 tiếng thôi, đi học và làm nhiều thứ vào để có kinh nghiệm.
Kinh nghiệm ở đây tôi muốn nói không chỉ là kinh nghiệm lập trình, mà là kinh nghiệm làm việc. Bạn là 1 lập trình viên, bạn làm việc với 1 ông giám đốc kinh doanh, bạn có nhìn ra được những điểm mạnh, điểm yếu của ông ta?
Hay đơn giản hơn đi, bạn có nhìn được điểm mạnh, điểm yếu của những người đồng nghiệp, bạn bè xung quanh bạn? Nếu nhìn nhận ra được, tôi tin bạn đang cố gắng cải thiện bản thân mỗi ngày. Còn nếu chưa nhìn ra được những điều tuyệt vời của những người đồng nghiệp, bạn bè xung quanh bạn, hãy thử nhìn cách họ nhìn nhận vấn đề, cách họ xử lý sự cố, cách họ giải quyết vấn đề.
Tôi tin khi bạn tìm ra được những điều đó, bạn sẽ thấy họ thật tuyệt vời.
Tầm nhìn lâu dài cho 1 người mới bắt đầu Flutter
Tôi luôn nghĩ ngành nào cũng phải cày như trâu mới có được thành tựu, quy tắc 10.000 giờ để thành công cũng đúng với ngành lập trình nói chung, và lập trình Mobile, Flutter nói riêng.
Muốn làm chuyên gia thì phải làm nghiệp dư trước đã, phải cày cuốc đã thì mới thấy yêu cái nghề này, mới muốn gắn bó với nó, đi cùng với nó, mới muốn sử dụng nó để kiếm tiền.
Nhưng có những người lại gắn bó theo kiểu, em chỉ học cái này thôi không học những cái khác nữa, em chỉ biết Flutter thôi, em học thật sâu, em học vài năm về Flutter là em sẽ giỏi, sẽ thành chuyên gia với mức lương nghìn đô. Điều đó không thực sự đúng.
Vì Flutter hoàn toàn có thể build ra mobile native app (android/ios) hoặc cũng có thể viết dưới dạng module để gắn vào native app, hay build ra web, desktop app cũng tương tự. Nhưng thử hỏi, bạn chỉ muốn gắn bó với Flutter, khi build ra mobile/web/desktop app bị lỗi, bạn sẽ xử lý nó như thế nào? Đem con bỏ chợ? Hay khi cần xử lý những tác vụ dưới native: mở file, chọn ảnh, chụp ảnh, kết nối bluetooth…hay config firebase, crashlytics…ở phía native, bạn sẽ làm gì?
Chính vì vậy, tôi luôn nghĩ, đừng bao giờ tự giới hạn bản thân ở Flutter, khi đủ kỹ năng về Flutter rồi, hãy học thêm cả native nữa. Sẽ không bao giờ là thừa đâu bạn nhé.
Tổng kết
Hành trình từ 1 trang giấy trắng, từ những người chưa có căn bản về lập trình cho tới khi đạt được mức lương $2k là rất dài và gian nan. Nhưng tôi chắc chắn nếu bạn có niềm tin mãnh liệt, bạn có thể làm được!
Nếu bạn chưa đủ niềm tin về Flutter, hay có câu hỏi, hãy cùng thảo luận về điều đó nhé.
Muốn đi nhanh, hãy đi 1 mình
Muốn đi xa, hãy đi cùng nhau.
ToanNM - Cựu Mobile Leader tại SoftDreams
toannm.jsc@gmail.com
Bình luận
Bài viết bổ ích quá cảm ơn những chia sẻ của anh